package pro.shushi.pamirs.framework.configure.annotation.emnu;

import pro.shushi.pamirs.meta.annotation.Errors;
import pro.shushi.pamirs.meta.common.enmu.ExpBaseEnum;

@Errors(displayName = "系统注解扫描错误枚举")
public enum AnnotationExpEnumerate implements ExpBaseEnum {

    SYSTEM_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10004000, "系统异常"),
    BASE_CLASS_NOT_FOUNT_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10004001, "类配置文件不存在或存在错误"),
    BASE_TEMPLATE_RENDER_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10004002, "模板渲染错误"),
    BASE_EXT_POINT_FUN_CONFLICT_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10004003, "扩展点函数编码冲突"),
    BASE_EXT_POINT_IS_NOT_EXIST_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10004004, "扩展点不存在"),
    BASE_EXT_POINT_NO_INTERFACE_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10004005, "未使用接口声明扩展点"),
    BASE_EXT_POINT_NO_FUN_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10004006, "未使用@Fun注解扩展点接口"),
    BASE_EXT_POINT_NO_FUN_VALUE_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10004007, "扩展点接口未配置@Fun注解的value属性"),
    BASE_EXT_POINT_NO_FUN_NAME_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10004008, "未指定扩展点名称"),
    BASE_EXT_POINT_INSTANCE_NO_IMPLEMENT_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10004009, "扩展点实现未实现扩展点接口"),
    BASE_EXT_POINT_INSTANCE_NO_NAMESPACE_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10004010, "扩展点实现未配置命名空间"),
    BASE_EXT_POINT_INSTANCE_HAS_FUN_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10004011, "扩展点实现不需要配置@Fun注解"),
    BASE_FUNCTION_NO_FUN_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10004012, "需要为@Function注解的方法所属类加上@Fun注解"),
    BASE_CONSTRAINT_NO_REFERENCE_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10004013, "模型约束配置错误"),
    BASE_DATA_DICTIONARY_HAS_FUN_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10004014, "请不要在枚举类上配置@Fun注解"),
    BASE_ERRORS_HAS_FUN_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10004015, "请不要在错误枚举类上配置@Fun注解"),
    BASE_MODEL_NO_MODEL_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10004016, "模型类未配置@Model注解"),
    BASE_MODEL_NO_MODEL_VALUE_INFO(ERROR_TYPE.SYSTEM_ERROR, 10004017, "建议配置@Model.model"),
    BASE_MODEL_HAS_TABLE_INFO(ERROR_TYPE.SYSTEM_ERROR, 10004018, "不建议配置@Model的table属性"),
    BASE_MODEL_HAS_INHERITED_INFO(ERROR_TYPE.SYSTEM_ERROR, 10004019, "不建议配置@Model.Advanced的inherited属性"),
    BASE_MODEL_NO_DISPLAY_NAME_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10004020, "未配置@Model的displayName属性"),
    BASE_MODEL_CONFIG_CONFLICT_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10004021, "模型类注解配置错误"),
    BASE_MODULE_NO_MODULE_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10004022, "模块类未配置@Module注解"),
    BASE_MODULE_CONFIG_CONFLICT_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10004023, "模块类不能配置@Model、@Model.model、@Model.Advanced、@Model.Constraints、@Fun、@Dict注解"),
    BASE_FIELD_UN_SUPPORT_TYPE_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10004024, "不支持的字段类型"),
    BASE_FIELD_TYPE_CONFLICT_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10004025, "字段多个业务类型冲突"),
    BASE_FIELD_ENUM_NO_DICTIONARY_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10004026, "未配置@Field.enum的dictionary属性"),
    BASE_FIELD_ENUM_WRONG_DICTIONARY_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10004027, "字段dictionary属性与字段枚举类型指定数据字典不一致"),
    BASE_FIELD_UN_SUPPORT_RELATION_TYPE_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10004028, "不支持的关联关系字段类型"),
    BASE_FIELD_NO_REFERENCE_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10004029, "未配置@Field.Relation注解的references或referenceClass属性，因为字段的Java类型不足以推断出关联模型的编码"),
    BASE_FIELD_UN_SUPPORT_O2O_TYPE_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10004030, "不支持的一对一字段类型"),
    BASE_FIELD_UN_SUPPORT_O2M_TYPE_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10004031, "不支持的一对多字段类型"),
    BASE_FIELD_UN_SUPPORT_M2O_TYPE_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10004032, "不支持的多对一字段类型"),
    BASE_FIELD_UN_SUPPORT_M2M_TYPE_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10004033, "不支持的多对多字段类型"),
    BASE_MODULE_NO_CONVERTER_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10004034, "未配置模块转换器"),
    BASE_MODEL_NO_CONVERTER_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10004035, "未配置模型转换器"),
    BASE_FIELD_NO_CONVERTER_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10004036, "未配置字段转换器"),
    BASE_FUNCTION_NO_CONVERTER_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10004037, "未配置函数转换器"),
    BASE_MODEL_NO_REFLECT_SIGNER_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10004038, "未配置模型反射签名器"),
    BASE_FIELD_UN_SUPPORT_BINARY_TYPE_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10004039, "业务类型BINARY不支持的Java类型"),
    BASE_FIELD_UN_SUPPORT_BOOLEAN_TYPE_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10004040, "业务类型BOOLEAN不支持的Java类型"),
    BASE_FIELD_UN_SUPPORT_DATE_TYPE_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10004041, "业务类型DATE不支持的Java类型"),
    BASE_FIELD_UN_SUPPORT_ENUM_TYPE_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10004042, "业务类型ENUM不支持的Java类型"),
    BASE_FIELD_UN_SUPPORT_FLOAT_TYPE_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10004043, "业务类型FLOAT不支持的Java类型"),
    BASE_FIELD_UN_SUPPORT_INTEGER_TYPE_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10004044, "业务类型INTEGER不支持的Java类型"),
    BASE_FIELD_UN_SUPPORT_STRING_TYPE_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10004045, "业务类型STRING不支持的Java类型"),
    BASE_FIELD_UN_SUPPORT_TEXT_TYPE_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10004046, "业务类型TEXT不支持的Java类型"),
    BASE_FIELD_M2M_NO_THROUGH_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10004047, "多对多字段未配置中间模型"),
    BASE_HOOK_BEFORE_NO_INTERFACE_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10004048, "前置扩展点未实现HookBefore接口"),
    BASE_HOOK_AFTER_NO_INTERFACE_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10004049, "后置扩展点未实现HookAfter接口"),
    BASE_FUNCTION_INVALID_NAME_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10004050, "请不要使用set、get、unset作为函数方法名的开头，使用toString作为函数方法名"),
    BASE_MODULE_IS_NOT_EXISTS_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10004051, "模块不存在"),
    BASE_MODULE_PACKAGE_CONFLICT_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10004052, "模块扫描包路径冲突"),
    BASE_DEPENDENT_MODULE_IS_NOT_EXISTS_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10004053, "依赖模块不存在"),
    BASE_DATA_SUBMIT_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10004054, "数据提交错误"),
    BASE_DATA_SUBMIT_EXECUTE_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10004055, "数据提交执行错误"),
    BASE_ERROR_DEPENDENCY_PACKAGE_PREFIX_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10004056, "依赖模块包前缀配置错误"),
    BASE_CONSUME_DEPENDENT_MODULE_IS_NOT_EXISTS_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10004057, "依赖模块不存在"),
    BASE_CONSUME_EXCLUSION_MODULE_IS_NOT_EXISTS_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10004058, "互斥模块不存在"),
    BASE_META_CONFIG_CONFLICT_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10004059, "元数据配置重复错误"),
    BASE_MODEL_NO_SIGNER_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10004060, "未配置模型签名器"),
    BASE_OVERRIDE_FIELD_ONLY_SUPPORT_RELATION_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10004061, "只有关联关系字段支持重写配置"),
    BASE_RELATED_CONFIG_IS_EMPTY_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10004062, "业务类型RELATED未配置引用字段");

    private final ERROR_TYPE type;

    private final int code;

    private final String msg;

    AnnotationExpEnumerate(ERROR_TYPE type, int code, String msg) {
        this.type = type;
        this.code = code;
        this.msg = msg;
    }

    public ERROR_TYPE getType() {
        return type;
    }

    public int getCode() {
        return code;
    }

    public String getMsg() {
        return msg;
    }
}
